package com.indexingsystem.boss.admin.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.indexingsystem.boss.Vo.ResCategoryRelationsVo;
import com.indexingsystem.boss.Vo.SelectResDetailVO;
import com.indexingsystem.boss.entity.ResCategoryRelations;

public interface ResCategoryRelationsMapper {

	/**
	 * 根据资源分类与资源关系id解除关系.
	 * 
	 * @param resCategoryRelationId
	 * @return
	 */
	int deleteByPrimaryKey(String resCategoryRelationId);
	
	
    /**
     * 获取所有资源分类中有资源的资源分类id集合.
     * @return
    */
    List<String> getResourceCategoryIdList();

	/**
	 * 批量删除资源分类 .
	 * 
	 * @param resCategoryRelationIdList
	 * @return
	 */
	int deleteResCategoryRelationsByIdBatch(@Param("list") List<String> list);

	/**
	 * 通过资源id批量清理资源分类关系.
	 * 
	 * @param list
	 * @return
	 */
	int deleteResBatchCategoryRelationsByResId(@Param("list") List<String> list);

	/**
	 * 通过资源分类id解除所有资源分类中资源关系.
	 * 
	 * @param resCategoryId
	 * @return
	 */
	int deleteResRelationByResCategoryId(String resCategoryId);
	
	/**
	 * 通过资源分类id和资源id删除资源分类关系信息.
	 * @param resCategoryRelations
	 * @return
	 */	
    int deleteResRelationByResIdOrResCategoryId(ResCategoryRelations resCategoryRelations);
	
	
	/**
	 * 批量删除资源分类已存在的数据.
	 * 
	 * @param resCategoryRelationsList
	 * @return
	 */
	int batchDeleteResCategoryRelations(ResCategoryRelations list);

	/**
	 * 批量删除资源分类、资源之间关系列表.
	 * 
	 * @param list
	 * @return
	 */
	int deleteBatchResRelationByResCategoryId(@Param("list") List<String> list);

	/**
	 * 建立资源分类与资源的关系.
	 * 
	 * @param record
	 * @return
	 */
	int insert(ResCategoryRelations record);

	/**
	 * 建立资源分类与资源的关系.
	 * 
	 * @param record
	 * @return
	 */
	int insertSelective(ResCategoryRelations record);

	/**
	 * 通过资源分类与资源关系id，查询资源详情.
	 * 
	 * @param resCategoryRelationId
	 * @return
	 */
	ResCategoryRelations selectByPrimaryKey(String resCategoryRelationId);

	/**
	 * 通过资源id查询资源关系信息.
	 * 
	 * @param resId
	 * @return
	 */
	List<ResCategoryRelationsVo> getResCategoryRelationsByResId(String resId);

	/**
	 * 修改资源分类与资源关系.
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKeySelective(ResCategoryRelations record);

	/**
	 * 修改资源分类与资源关系.
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKey(ResCategoryRelations record);
	
	
	   
    /**
      * 通过分类id和资源id结合查询返回资源分类关系.
      * @param record
      * @return
      */
    List<ResCategoryRelations> selectResCategoryRelationsInfo(ResCategoryRelations record);
    /**
     * 通过分类id和资源id结合查询返回资源分类关系.
     * @param record
     * @return
     */
	ResCategoryRelations selectResCategoryRelationsModelInfo(ResCategoryRelations record);

	/**
	 * 通过资源id查询资源分类与资源关联信息.
	 * 
	 * @param resCategoryRelations
	 * @return
	 */
	List<ResCategoryRelations> selectResCategoryRelByResId(ResCategoryRelations resCategoryRelations);
	
	
	/**
	 * 通过资源分类id获取分类关联资源.
	 * @param resCategoryId
	 * @return
	 */
	List<ResCategoryRelations> selectResCategoryRelByResCategoryId(String resCategoryId);

	/**
	 * 批量新增资源分类中的资源关系.
	 * 
	 * @param resCategoryRelationsList
	 * @return
	 */
	int insertResCategoryRelationsBatch(@Param("list") List<ResCategoryRelations> list);

	/**
	 * 批量修改资源分类关系.
	 * 
	 * @param list
	 * @return
	 */
	int updateResCategoryRelationsBatch(@Param("list") List<ResCategoryRelations> list);
	
	
    /**
     * 通过资源id获取资源分类关系列表.
     * @param resId
     * @return
     */
    List<ResCategoryRelations>  getResCategoryRelationsListByResId(String resId);
    
    /**
     * 通过资源关系ID查询资源更新列表
     * @param resId
     * @return
     */
    SelectResDetailVO selectResDetail(String resCategoryRelationId);
    
    
   int deleteByPrimaryKeyByResId(String resId) ;
}